package cn.edu.java.io.inputstream.filterinputstream;

import java.io.*;
import java.util.zip.CRC32;
import java.util.zip.CheckedInputStream;

public class CheckedInputStreamDemo {
    public static void main(String[] args) {
        try {
            String message = "Hello, World!";
            byte[] bytes = message.getBytes();

            // 创建一个 ByteArrayInputStream 对象
            ByteArrayInputStream input = new ByteArrayInputStream(bytes);

            // 创建一个 CheckedInputStream，使用 CRC32 算法计算校验和
            CheckedInputStream checkedInput = new CheckedInputStream(input, new CRC32());

            // 创建一个缓冲区
            byte[] buffer = new byte[1024];
            int bytesRead;

            // 读取输入流并计算校验和
            while ((bytesRead = checkedInput.read(buffer)) != -1) {
                // 在这里可以对读取的数据进行其他操作
            }

            // 获取校验和值
            long checksum = checkedInput.getChecksum().getValue();

            // 关闭输入流
            checkedInput.close();

            System.out.println("Checksum: " + checksum);  // Checksum: 3964322768
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

